<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 静态成员: 属于类的 不属于 实例对象的成员 ; 不需要实例化
        // ES5;
        // 1.静态属性 2.静态方法
        // let num = 0;
        // function Person(name){
        //     this.name = name;
        //         this.num = 0;
        //         num++;
        //     Person.num++;
        // }   
        // Person.num = 0; // 静态属性
        // Person.fn  =function(){ // 静态方法
        //     console.log('fn');
        // }

        // Person.fn();

        // let zhangsan = new Person('张三');
        // let lisi = new Person('李四');

        // console.log(Person.num);

        // //ES6 静态成员
        // class Person{
        //     static num = 0;//静态属性
        //     constructor(name){
        //         this.name = name ;
        //     }
        //     static fn(){
        //         console.log('fn');// 静态方法
        //     }
        // }

        // console.log(Person.num);
        // Person.fn();


        // 单例模式 : 一个类只保证有一个实例;window document store
        class Person{
            static instance = null ;// 通过instance 保存实例化状态
            constructor(name){
                this.name = name;
                if(!Person.instance){
                    // 没有实例化,就通过Person.instance 静态属性保存 实例
                    Person.instance = this;
                }else{
                    return Person.instance;
                }
            }
        }

        let zhangsan = new Person('张三');
        let lisi = new Person('李四');

        console.log(zhangsan,lisi);








    </script>
</body>
</html>